#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QIcon>


Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    // QWidget的各种控件
   // 第一个：enable控件
   // 创建一个按钮
//    button = new QPushButton(this);
//    button->setText("点我呀!");
//    button->move(300, 300);
    // 关联槽函数
//    connect(button, &QPushButton::clicked, this, &Widget::handlerClicked);
//    connect(button, &QPushButton::clicked, this, [this]() {
//        this->setWindowTitle("按钮被点下啦!");
//        qDebug() << "按钮被点下啦!" << endl;
//        button->setEnabled(false);
//    });
    // 设置控件不可用
//    button->setEnabled(false);


//    connect(button, &QPushButton::clicked, this, &Widget::handlerClicked);
//    QPushButton* changeButton = new QPushButton(this);
//    changeButton->setText("点击切换");
//    changeButton->move(300, 500);
//    // 关联槽函数
//   connect(changeButton, &QPushButton::clicked, this, &Widget::change);





    // 第二个——geometry
//    srand(time(nullptr)); // 种下一颗随机数种子

    // 第三个属性——WindowTitle
//    this->setWindowTitle("这是一个窗口标题");
//    QPushButton* button = new QPushButton(this);
//    button->setText("按钮");
//    button->setWindowTitle("通过按钮设置的窗口标题"); // WindowTitle只针对顶层窗口这样的QWidget才有效， QPushButton不是顶层窗口，所以无效
//    // 但是当我们给PushButton设置了WindowTitle后，虽然没有任何效果，但也没有报错，“没有报错”这样的设定是不太科学的


    // 第四个属性——windowIcon(窗口的图标)(和windowTitle一样，只能针对顶层窗口起效果)
    QIcon icon("C:/Users/HONOR/Desktop/title.png"); // 注意：QIcon这个类不能在堆上创建，而是要在栈上创建，因为QIcon是一个比较小的对象，而且它的作用只是设置图标，设置之后，这个对象释放不释放都无所谓
    // 所以它也就不用放到对象树上(QIcon也不支持对象树)
    // 设置图标
    this->setWindowIcon(icon);
    // 但是通过绝对路径的方式设置图标是不科学的，因为你无法确定，你的开发机器上的图标路径和用户机器上的图标路径是一致的
    // 因此相比于使用绝对路径的方式，使用相对路径的方式是更好的





}

Widget::~Widget()
{
    delete ui;
}
// 第一个控件：enable

//void Widget::handlerClicked()
//{
//    this->setWindowTitle("按钮被点下啦!");
//    qDebug() << "按钮被点下啦!" << endl;
//    //button->setEnabled(false);
//}

//void Widget::change()
//{
//    button->setEnabled(!button->isEnabled());
//}

// 第二个控件——geometry
//void Widget::on_pushButton_up_clicked()
//{
//    QRect rect = ui->pushButton_target->geometry();
//    qDebug() << "向上: " << rect << endl;
//    rect.setY(rect.y() - 5);
//    ui->pushButton_target->setGeometry(rect);
//}

//void Widget::on_pushButton_down_clicked()
//{
//    QRect rect = ui->pushButton_target->geometry();
//    qDebug() << "向下: " << rect << endl;
//    rect.setY(rect.y() + 5);
//    ui->pushButton_target->setGeometry(rect);
//}

//void Widget::on_pushButton_left_clicked()
//{
//    QRect rect = ui->pushButton_target->geometry();
//    qDebug() << "向左: " << rect << endl;
//    rect.setX(rect.x() - 5);
//    ui->pushButton_target->setGeometry(rect);
//}

//void Widget::on_pushButton_right_clicked()
//{
//    QRect rect = ui->pushButton_target->geometry();
//    qDebug() << "向右: " << rect << endl;
//    rect.setX(rect.x() + 5);
//    ui->pushButton_target->setGeometry(rect);
//}
// 以上代码当前执行的效果，都只是在修改左上角那个点的位置，位置改变的同时，高度和宽度也在同时改变

// 实现”平移“效果
//void Widget::on_pushButton_up_clicked()
//{
//    QRect rect = ui->pushButton_target->geometry();
//    qDebug() << "向上: " << rect << endl;
////    rect.setY(rect.y() - 5);
////    ui->pushButton_target->setGeometry(rect);
//    ui->pushButton_target->setGeometry(rect.x(), rect.y() - 5, rect.width(), rect.height());
//}

//void Widget::on_pushButton_down_clicked()
//{
//    QRect rect = ui->pushButton_target->geometry();
//    qDebug() << "向下: " << rect << endl;
////    rect.setY(rect.y() + 5);
////    ui->pushButton_target->setGeometry(rect);
//    ui->pushButton_target->setGeometry(rect.x(), rect.y() + 5, rect.width(), rect.height());
//}

//void Widget::on_pushButton_left_clicked()
//{
//    QRect rect = ui->pushButton_target->geometry();
//    qDebug() << "向左: " << rect << endl;
////    rect.setX(rect.x() - 5);
////    ui->pushButton_target->setGeometry(rect);
//    ui->pushButton_target->setGeometry(rect.x() - 5, rect.y(), rect.width(), rect.height());
//}

//void Widget::on_pushButton_right_clicked()
//{
//    QRect rect = ui->pushButton_target->geometry();
//    qDebug() << "向右: " << rect << endl;
////    rect.setX(rect.x() + 5);
////    ui->pushButton_target->setGeometry(rect);
//    ui->pushButton_target->setGeometry(rect.x() + 5, rect.y(), rect.width(), rect.height());
//}

// 实现一个“不可拒绝的程序"


//void Widget::on_pushButton_clicked()
//{
//    ui->label->setText("恭喜您支付成功!成功加入vip会员队列!!");
//    ui->pushButton_2->setEnabled(false);
//}
// 鼠标一下一上触发
//void Widget::on_pushButton_2_clicked()
//{
//    // 先获取当前屏幕大小
//    int w = this->geometry().width();
//    int h = this->geometry().height();
//    int x = rand() % w;
//    int y = rand() % h;
//    ui->pushButton_2->move(x, y);

//}

//// 鼠标一按下触发
//void Widget::on_pushButton_2_pressed()
//{
//    // 先获取当前屏幕大小
//    // 获取Widget主体的大小
////    int w = this->geometry().width();
////    int h = this->geometry().height();
//    // 获取整个窗口(包括状态栏)的大小
//    int w = this->frameGeometry().width();
//    int h = this->frameGeometry().height();
//    int x = rand() % w;
//    int y = rand() % h;
//    ui->pushButton_2->move(x, y);
//}
